import { CommonForm } from "@/pages/OrderModule/common/components/CommonForm";
import { CommonModal } from "@/views/components/CommonModal";
import SubTitle from "@/pages/OrderModule/common/components/SubTitle";
import Typography from "@/pages/OrderModule/common/components/Typography";
import { ExclamationCircleOutlined } from "@ant-design/icons";
import { Alert, Button, Col, Form, InputNumber, Select, Modal, Radio, Row, Space, Progress, message } from "antd";
import CommonInputNumber from "@/pages/OrderModule/common/components/CommonInputNumber";
import { useEffect, useState } from "react";

/**
手动发货：这里针对待发货的订单可以直接操作修改状态变为已发货状态、

点击时需要判断是否勾选了订单，若没有勾选订单，则提示：请先勾选订单数据、

若勾选了数据，则这里的弹窗内的订单数为勾选的数据（需要把没有物流单号的数据剔除掉）

输入包裹重量为必填项，最小值为0.01
 *
 *  */
// const success = true;
// const data = {
// 	w1768154405783035905: {
// 		"1768154409943785474": [
// 			{
// 				type: "customtext",
// 				id: 1768154409943785500,
// 				key: "标题",
// 				prod: "合格证",
// 				left: "97.28125",
// 				top: "5",
// 				width: "127",
// 				height: "40",
// 				fontFamily: "黑体",
// 				fontSize: "9"
// 			},
// 			{
// 				type: "text",
// 				id: 1768154409943785500,
// 				key: "颜色规格",
// 				prod: "",
// 				left: "15",
// 				top: "58",
// 				width: "160",
// 				height: "22",
// 				fontFamily: "黑体",
// 				fontSize: "9"
// 			},
// 			{
// 				type: "text",
// 				id: 1768154409943785500,
// 				key: "商品成分",
// 				prod: "",
// 				left: "17",
// 				top: "89",
// 				width: "160",
// 				height: "22",
// 				fontFamily: "黑体",
// 				fontSize: "9"
// 			},
// 			{
// 				type: "text",
// 				id: 1768154409943785500,
// 				key: "商品名称",
// 				prod: "",
// 				left: "15",
// 				top: "32",
// 				width: "160",
// 				height: "22",
// 				fontFamily: "黑体",
// 				fontSize: "9"
// 			},
// 			{
// 				type: "text",
// 				id: 1768154409943785500,
// 				key: "产品等级",
// 				prod: "",
// 				left: "17",
// 				top: "121",
// 				width: "160",
// 				height: "22",
// 				fontFamily: "黑体",
// 				fontSize: "9"
// 			},
// 			{
// 				type: "text",
// 				id: 1768154409943785500,
// 				key: "执行标准",
// 				prod: "",
// 				left: "18",
// 				top: "152",
// 				width: "160",
// 				height: "22",
// 				fontFamily: "黑体",
// 				fontSize: "9"
// 			},
// 			{
// 				type: "text",
// 				id: 1768154409943785500,
// 				key: "安全类别",
// 				prod: "",
// 				left: "17",
// 				top: "184",
// 				width: "160",
// 				height: "22",
// 				fontFamily: "黑体",
// 				fontSize: "9"
// 			},
// 			{
// 				type: "text",
// 				id: 1768154409943785500,
// 				key: "产地",
// 				prod: "",
// 				left: "17",
// 				top: "216",
// 				width: "160",
// 				height: "22",
// 				fontFamily: "黑体",
// 				fontSize: "9"
// 			}
// 		]
// 	},
// 	w1768110355109462017: {
// 		"1768110360167792642": [
// 			{
// 				type: "customtext",
// 				id: 1768110360167792600,
// 				key: "标题",
// 				prod: "合格证",
// 				left: "97.28125",
// 				top: "5",
// 				width: "127",
// 				height: "40",
// 				fontFamily: "黑体",
// 				fontSize: "9"
// 			},
// 			{
// 				type: "text",
// 				id: 1768110360167792600,
// 				key: "颜色规格",
// 				prod: "",
// 				left: "15",
// 				top: "58",
// 				width: "160",
// 				height: "22",
// 				fontFamily: "黑体",
// 				fontSize: "9"
// 			},
// 			{
// 				type: "text",
// 				id: 1768110360167792600,
// 				key: "商品成分",
// 				prod: "",
// 				left: "17",
// 				top: "89",
// 				width: "160",
// 				height: "22",
// 				fontFamily: "黑体",
// 				fontSize: "9"
// 			},
// 			{
// 				type: "text",
// 				id: 1768110360167792600,
// 				key: "商品名称",
// 				prod: "",
// 				left: "15",
// 				top: "32",
// 				width: "160",
// 				height: "22",
// 				fontFamily: "黑体",
// 				fontSize: "9"
// 			},
// 			{
// 				type: "text",
// 				id: 1768110360167792600,
// 				key: "产品等级",
// 				prod: "",
// 				left: "17",
// 				top: "121",
// 				width: "160",
// 				height: "22",
// 				fontFamily: "黑体",
// 				fontSize: "9"
// 			},
// 			{
// 				type: "text",
// 				id: 1768110360167792600,
// 				key: "执行标准",
// 				prod: "",
// 				left: "18",
// 				top: "152",
// 				width: "160",
// 				height: "22",
// 				fontFamily: "黑体",
// 				fontSize: "9"
// 			},
// 			{
// 				type: "text",
// 				id: 1768110360167792600,
// 				key: "安全类别",
// 				prod: "",
// 				left: "17",
// 				top: "184",
// 				width: "160",
// 				height: "22",
// 				fontFamily: "黑体",
// 				fontSize: "9"
// 			},
// 			{
// 				type: "text",
// 				id: 1768110360167792600,
// 				key: "产地",
// 				prod: "",
// 				left: "17",
// 				top: "216",
// 				width: "160",
// 				height: "22",
// 				fontFamily: "黑体",
// 				fontSize: "9"
// 			}
// 		]
// 	}
// };
import { hiprint } from "vue-plugin-hiprint";
import { getAllPrinter } from "@/utils/print.jsx";
import { setPrinterName, getPrinterName, getCurrentUser } from "@/utils/authority";
import { batchPrintByQualifiedOutbound } from "../../../service";
import { cloneDeep } from "lodash";

const title = "合格证";
const printKey = "code";
const printQueenArr = [];
const printedArr = [];
let hiprintTemplate, runner;

function ActionModal(props) {
	console.log("ActionModal(props)", props);
	const { selectedRows } = props;

	const [visible, setVisible] = useState("EditModal");

	const [percent, setPercent] = useState(0);

	const [result, setResult] = useState({ total: "--", success: "--", failed: "--" });

	const [form] = Form.useForm();

	function handleOk() {
		form.submit();
	}
	function onFinish() {
		if (!printData?.length) {
			return message.info("打印数据为空");
		}
		// printer 选中的打印机名称
		form.validateFields().then(({ printer }) => {
			const task = [];
			printData.map(item => {
				task.push(done => {
					realPrint(runner, done, item, printer);
				});
			});
			runner.addMultiple(task);
			message.success(`即将打印${printData.length}个${title}，请等待`);
			props.onCancel();
		});
	}

	if (visible !== "EditModal") return <></>;

	/***************************** */
	const [printerOnlineList, setPrinterOnlineList] = useState([]);
	const [printData, setPrintData] = useState([]);
	const [template, setTemplate] = useState([]);

	useEffect(() => {
		console.log("TaskRunner", TaskRunner);
		if (visible === "EditModal") {
			if (!runner) {
				runner = new TaskRunner();
				runner.setConcurrency(1); // 同时执行数量
			}

			getAllPrinter(value => {
				console.log("getAllPrinter", value);
				const printerName = getPrinterName();
				if (printerName && value.includes(printerName)) {
					form.setFieldsValue({
						printer: printerName
					});
				} else {
					form.resetFields();
				}
				setPrinterOnlineList(value);

				getPrinterTemplate();
			});
		}
	}, [visible]);

	const getPrinterTemplate = async () => {
		const param = selectedRows.map(e => e.outboundNo);
		const { data } = await batchPrintByQualifiedOutbound(param);

		let temps = [];
		Object.values(data).forEach(skuObj => {
			const list = Object.values(skuObj).map(template => {
				return {
					...template
				};
			});
			temps.push(...list);
		});
		console.log(temps);
		setTemplate(temps);
		setPrintData(cloneDeep(temps));
	};

	/**
	 *  打印队列渲染输出
	 * @param {*} runner
	 * @param {*} done
	 * @param {*} printDataItem 数据 item
	 * @param {*} printer  打印机名称
	 */
	const realPrint = (runner, done, printDataItem, printer) => {
		console.log("打印队列渲染输出：打印模板 template", template);
		hiprintTemplate = new hiprint.PrintTemplate({ template });

		//回调相同逻辑处理
		const callBack = () => {
			// statusChange(printedArr);
			// refresh(printedArr);
			printedArr = [];
		};

		hiprintTemplate.on("printSuccess", function () {
			printDataItem.uniqueCode && printedArr.push(printDataItem.uniqueCode);
			console.log("printSuccess  printedArr", printedArr);
			console.log("printSuccess  runner", runner);
			if (!runner?.tasks?.list?.length || printedArr?.length == 10) {
				callBack();
			}
			done();
		});
		hiprintTemplate.on("printError", function () {
			console.log("printError  printedArr", printedArr);
			console.log("printError  runner", runner);
			if (!runner?.tasks?.list?.length) {
				callBack();
			}
			done();
		});
		hiprintTemplate.print2(printDataItem, { printer });
	};

	return (
		<CommonModal title={{ title: "合格证打印" }} open={true} width="530px" onCancel={props.onCancel} onOk={handleOk}>
			{/* <Alert type="info" message={<Typography as="s1">可发货订单数：{props.selectedRows.length}</Typography>} />
			 */}
			<CommonForm
				formProps={{
					form,
					onFinish
				}}
				columns={[
					{
						label: "订单数量",
						slot: <>{props.selectedRows.length}</>
					},
					{
						Component: Select,
						name: "printer",
						label: "打印机",
						rules: [{ required: true, message: "请选择打印机" }],
						props: {
							placeholder: "请选择打印机",
							options: printerOnlineList.map(d => ({
								value: d,
								label: d
							}))
						}
					}
				]}
			></CommonForm>
		</CommonModal>
	);
}

export default ActionModal;
